#ifndef UMEKO_LOG_H
#define UMEKO_LOG_H
#include <Arduino.h>
#define ConsoleInfo Serial

// 在Serial的输出之前自动添加格式
size_t logf(const char *format, ...) {
    size_t n = 0;
    char buf[128];
    va_list args;
    va_start(args, format);
    n = vsnprintf(buf, sizeof(buf), format, args);
    va_end(args);
    // 绿色时间戳
    ConsoleInfo.print("[\033[32m");
    ConsoleInfo.printf("%6lu", millis());
    ConsoleInfo.print("\033[0m]");
    ConsoleInfo.print(buf);
    // 检查末尾是否有换行符
    size_t len = strlen(buf);
    if (len == 0 || buf[len - 1] != '\n') {
        ConsoleInfo.println();
    } 
    return n;
}

// 在Serial的输出之前自动添加格式
void logln(const char *buf) {
    ConsoleInfo.print("[\033[32m");
    ConsoleInfo.printf("%6lu", millis());
    ConsoleInfo.print("\033[0m]");
    ConsoleInfo.println(buf);
}

#endif // LOG_H